//
//  XSRequestDatas.h
//  XSWangLuo
//
//  Created by xingshuai on 2020/11/6.
//

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSInteger, XSRequestMethodType) {
    XSRequestMethodTypePost = 0,   // post请求
    XSRequestMethodTypeGet  = 1    // get请求
};

NS_ASSUME_NONNULL_BEGIN

@interface XSRequestDatas : NSObject

/** 网络通信核心，网络请求执行者 */
@property (nonatomic, strong) AFHTTPSessionManager *httpManager;

/** 单例 */
+(instancetype)shareRequestDatas;

/// POST 网络请求
/// @param url       请求路径url
/// @param parameter 请求参数
/// @param success   请求成功回调
/// @param failure   请求失败处理
+(void)requestPostWithUrl:(NSString *)url withParameter:(NSMutableDictionary *)parameter success:(void(^)(id response))success failure:(void(^)(NSError *err))failure;

/// GET 网络请求
/// @param url       请求路径url
/// @param parameter 请求参数
/// @param success   请求成功回调
/// @param failure   请求失败处理
+(void)requestGetWithUrl:(NSString *)url withParameter:(NSMutableDictionary *)parameter success:(void(^)(id response))success failure:(void(^)(NSError *err))failure;

/// 上传图片多张
/// @param url       请求路径url
/// @param parameter 请求参数
/// @param imgList   要上传的图片数组
/// @param success   请求成功回调
/// @param failure   请求失败处理
+(void)requestUpLoadImageWithUrl:(NSString *)url withParameter:(NSMutableDictionary *)parameter withImgs:(NSArray *)imgList success:(void(^)(id response))success failure:(void(^)(NSError *err))failure;

/// 网络下载
/// @param url       请求路径url
/// @param parameter 请求参数
/// @param success   请求成功回调
/// @param failure   请求失败处理
+(void)requestDownLoadWithUrl:(NSString *)url withParameter:(NSMutableDictionary *)parameter success:(void(^)(id response))success failure:(void(^)(NSError *err))failure;

/// 特殊网络请求 header(请求头参数) + body(对象参数)
/// @param methodType    请求方式（get/post）
/// @param url           请求路径url
/// @param headParameter 请求头参数集合
/// @param bodyParameter body参数集合
/// @param success       请求成功
/// @param failure       请求失败
+(void)requestAddBodyWithMethod:(XSRequestMethodType)methodType withUrl:(NSString *)url withHeadParamter:(NSDictionary *)headParameter withBodyParameter:(NSDictionary *)bodyParameter success:(void(^)(id response))success failure:(void(^)(NSError *err))failure;

@end

NS_ASSUME_NONNULL_END
